Generally, in distributed computer operating systems, there are particular network-wide tasks that are best performed by a single server machine rather than multiple servers. For example, generating unique identifiers and updating the domain name space of a directory service are tasks that have traditionally been performed by pre-designated single master servers.
Most proposed multi-server alternatives to the single server design have proven too complex to be practicable. Multi-sever designs require synchronizing the efforts of multiple machines; this is difficult to achieve and even harder to maintain. Further, in multi-server systems when a server becomes out-of-sync with the other servers, conflicts arise between servers, many of which cannot be gracefully resolved. By comparison, designating a single machine to perform a particular network-wide task is much simpler and avoids the complications and conflicts associated with multi-server designs.
Thus, in existing computer operating systems, it is common for a network task to be performed by a single pre-designated master server. In such systems, the remaining network servers are pre-configured to refer to the pre-designated master server whenever the particular network task need be performed.
Single server designs, however, do have limitations. For example, complications may result in pre-defined single master server configurations when the master server crashes or otherwise becomes unavailable to the other servers on the network. In such situations, the remaining network machines cannot perform the function that the master server is designated to provide. Thus, the absence of a master server that is exclusively responsible for a system critical task can cripple a network and all machines connected to it. Even when the master server's absence from the network is scheduled, as in the case of system maintenance, a new server needs to be promoted to master and the remaining servers on the network re-configured, typically by manual means, to communicate with the new master.
Thus, there is a need in the art for a distributed computing system wherein although any of a number of servers in the network has the physical capacity to perform a particular network task, at any given time only one server has exclusive authority to perform the task. Exclusive authority to perform the task should be easily transferred between machines, however, so as to avoid the limitations of prior single server designs. Upon transfer to a new machine of the authority to perform the network-wide task, the remaining servers in the network should be automatically notified of the change.